Launch Open & Async (post live + buy-now CTAs)#1912
Merged
Conversation
Launch day (July 21, 2026) is a coupled change: nothing gates on post date, so the post going live and the sitewide promos flipping to buy-now must ship together (shipping the CTA flip early caused #1899). - Unhide the launch post (published: false → true). - BookCta.astro: teaser → buy-now on both variants ("Out now" / "Buy it — bookPrice"), matching the marketing site and BookLaunchCta. Add a featured-card aria-label and brand focus-visible rings while there. - BookLaunchCta.astro: buy links now use a launch-post-specific utm_source; add focus-visible rings. - feed.xml.ts: same buy-now flip for the RSS/email CTA, with an email utm_source so that surface is measurable. - config.ts: distinct per-surface utm_source (matching the site-wide benbalter-<surface> convention) so each buy surface is attributable. - Reframe the "cut" book-lineage headline toward abundance. - Regenerate the homepage hero banner (header.jpg) "COMING JULY 21, 2026" → "OUT NOW" from the marketing repo's banner generator. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts: # src/components/BookCta.astro
benbalter
marked this pull request as ready for review
July 20, 2026 15:44
The featured card's aria-label did not contain the link's visible text, tripping axe's label-content-name-mismatch and failing Lighthouse CI. Remove the aria-label so the accessible name comes from content, as on main. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The launch banner was regenerated at 1× (1000×379), halving the served public/assets/img/header.jpg that the .hero-unit CSS background renders directly (no srcset). On Retina displays that looked soft. Regenerate at the design's native 2000×758 from the marketing banner generator. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Convert 'Working from home ≠ working remotely.' and 'Stop digitizing the office. Start building something better.' to :quote directives so they render as shareable pull quotes. - Drop 'today' from the title and TL;DR so they don't read stale after launch day. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The cover art is a 3D mockup on a transparent background with its own baked-in drop shadow. rounded-md/shadow-lg (and the inline variant's shadow-md) applied a second, rectangular CSS shadow to the image's bounding box, rendering as a stray rounded card floating behind the book. Drop the redundant utilities and rely on the mockup's own shadow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- TL;DR: make 'open-and-async.com' a link (rendered via marked, so inline markdown works) with the launch-post UTM. - BookLaunchCta: same transparent-mockup fix as BookCta — drop rounded-md/shadow-2xl so the CSS box-shadow stops drawing a stray card behind the book; the mockup carries its own shadow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The book goes on sale July 21; open-and-async.com is pre-order until then. Nothing on the site gates on the post date, so the moment this merges the launch post publishes, every buy-now CTA goes live, the hero banner flips to "Out now," and the RSS/email broadcast fires. Merging early reproduces #1899 (buy-now live while the store is still pre-order). Keep as draft until launch day, then mark ready and merge.
What this does
Flips the site from pre-launch teaser → buy-now, as one coupled change (the post gate and the sitewide promos must ship together):
2026-07-21-open-and-async.mdx:published: false → true.BookCta(homepage/about featured + inline-on-posts): "Coming July 21 / Get notified" → "Out now" / "Buy it — $9.99".BookLaunchCta(the launch post's bespoke CTA): unchanged copy (already buy-now); buy links now carry a launch-post-specificutm_source.feed.xml.ts): same buy-now flip, with an email-specificutm_source.header.jpg): regenerated "COMING JULY 21, 2026" → "OUT NOW" from the marketing repo's banner generator (same design/dimensions).Also folded in (from a blind design + marketing consult)
utm_sourcein the existing site-widebenbalter-<surface>convention, so the launch post, everyday CTA, and email are each measurable (previously all collapsed to the generic source).aria-label(was a run-on accessible name) and all buy CTAs get a brandfocus-visiblering.Verification
npm run check— 0 errorsutm_source)npm run build— pass; confirmed the now-published post renders with buy-now copy and thefocus-visibleutilities emit CSSOut of scope
The marketing site itself (open-and-async.com) flips via its own launch runbook in
~/projects/open-and-async-site— this PR only touches ben.balter.com.🤖 Generated with Claude Code